<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head><title>Programming in Lua : 3.5</title>
<link rel="stylesheet" type="text/css" href="pil.css">
</head>
<body>
<p class="warning">
<A HREF="contents.html"><IMG TITLE="Programming in Lua (first edition)" SRC="capa.jpg" ALT="" ALIGN="left"></A>This first edition was written for Lua 5.0. While still largely relevant for later versions, there are some differences.<BR>The third edition targets Lua 5.2 and is available at <A HREF="http://www.amazon.com/exec/obidos/ASIN/859037985X/theprogrammil3-20">Amazon</A> and other bookstores.<BR>By buying the book, you also help to <A HREF="../donations.html">support the Lua project</A>.
</p>
<table width="100%" class="nav">
<tr>
<td width="10%" align="left"><a href="3.4.html"><img border="0" src="left.png" alt="Previous"></a></td>
<td width="80%" align="center"><a href="contents.html"><font face="Helvetica,Arial,sanserif">
<font color="gray">Programming in </font><font color="blue"> Lua</font>
</font></a></td>
<td width="10%" align="right"><a href="3.6.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
<tr>
<td width="10%" align="left"></td>
<td width="80%" align="center"><a href="contents.html#P1">Part I. The Language</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="contents.html#3">Chapter 3. Expressions</a></td>
<td width="10%" align="right"></td></tr>
</table>
<hr/>
<p><h2>3.5 &ndash; Precedence</h2>

<p>

<p>Operator precedence in Lua follows the table below,
from the higher to the lower priority:
<pre>
             ^
             not  - (unary)
             *   /
             +   -
             ..
             &lt;   >   &lt;=  >=  ~=  ==
             and
             or
</pre>
All binary operators are left associative,
except for `<code>^</code>&acute; (exponentiation) and `<code>..</code>&acute; (concatenation),
which are right associative.
Therefore, the following expressions on the left are equivalent
to those on the right:
<pre>
    a+i &lt; b/2+1          &lt;-->       (a+i) &lt; ((b/2)+1)
    5+x^2*8              &lt;-->       5+((x^2)*8)
    a &lt; y and y &lt;= z     &lt;-->       (a &lt; y) and (y &lt;= z)
    -x^2                 &lt;-->       -(x^2)
    x^y^z                &lt;-->       x^(y^z)
</pre>
When in doubt, always use explicit parentheses.
It is easier than looking up in the manual
and probably you will have the same doubt when you
read the code again.

<hr/>
<table width="100%" class="nav">
<tr valign="top">
<td width="90%" align="left">
<small>
  Copyright &copy; 2003&ndash;2004 Roberto Ierusalimschy.  All rights reserved.
</small>
</td>
<td width="10%" align="right"><a href="3.6.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
</table>


</body></html>

